4
תגובות
בעמוד הדוקומנטציה על Traits (המדהים, אגב) כתוב:
ניסיתי להגדיר משתנים סטטיים (ומאפיינים סטטיים) ב-Traits, וזה עבד לי מעולה. כנראה פספסתי משהו. מישהו יכול להסביר לי את זה בבקשה?
Static variables can be referred to in trait methods, but cannot be defined by the trait. Traits can, however, define static methods for the exhibiting class.
ניסיתי להגדיר משתנים סטטיים (ומאפיינים סטטיים) ב-Traits, וזה עבד לי מעולה. כנראה פספסתי משהו. מישהו יכול להסביר לי את זה בבקשה?
4 תשובות
ענה
iiddaannyy
ב
03 למאי 2013
#
זה מדבר על משתנים סטטיים בתוך מתודות. לא על מאפייני מחלקה.
המסקנה ממה שהם כותבים היא שמשתנה סטטי בתוך מתודה ב-trait לא יהיה זהה בכל המחלקות שמשתמשות באותו trait.
אם תראה את הדוגמה שאחרי שני המשפטים שהבאת, תוכל לראות שמודפס פעמיים 1. במקום 1 ואז 2, כפי שאולי היינו מצפים משום שהמשתנה הוא סטטי.
אבל זה כבר מובן מאליו ברגע שאתה מבין ששימוש ב-trait הוא פשוט העתקה של תוכן ה-trait אל תוך המחלקה שלנו.
אגב בד"כ נהוג לכנות משתנים בתוך קלאס כ-property, אז לרוב אם יכתבו variables כנראה לא יתייחסו למשתנים של הקלאס/טרייט/וואטאבר (כשהערך מדובר על oo כמובן)